﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using System.Data;
using System.IO;
using System.Configuration;
using System.Transactions;
using System.Data.Linq;
using System.ComponentModel;
using UtilityExtensions;

namespace BOL.Ventas
{
   public class GetProformaExcel
    {


        int _count;




        public int Count(int idProyecto,
                        int idEtapa,
                        int idTipoVivienda,
                        int cuentaAhorroStr,
                        int idestado,
                        string clienteStr,
                        string cuiStr,
                        string numDocumento)
        {
            return _count;
        }



        private IQueryable<ProformaExcel> ApplySelect_ListInfo()
        {
            DAL.Menu ProformaRead = DbUtil.Db.Menus.Single(p => p.idInternal == 114);

            var q = from a in DbUtil.Db.ProformaItems
                    select new ProformaExcel
                    {
                         apellido=a.Proforma.apellido.ToUpper(),
                         bono = a.Proforma.bono.Value,
                         contado = a.Proforma.contado.Value,
                         direccion = a.Proforma.direccion.ToUpper(),
                         docCliente = a.Proforma.docCliente,
                         email = a.Proforma.email.ToUpper(),
                         fecha = a.Proforma.fecha.ToShortDateString(),
                         financiado = a.Proforma.financiado.Value,
                         idPregusnta1 = a.Proforma.GrupoDatoitem.descripcion.ToUpper(),
                         idProyecto = a.Proforma.idProyecto,
                         nombre = a.Proforma.nombre.ToUpper(),
                         numDocumento = a.Proforma.numDocumento,
                         observacion = a.Proforma.observacion,
                         observacionFinan = a.Proforma.observacionFinan,
                         telefono = a.Proforma.telefono,
                         tipoIngreso = a.Proforma.tipoIngreso,
                         total=string.Format("{0} {1:N}",a.Proforma.Moneda.simbol, a.total),
                         idEtapa=a.UI.idEtapa,
                         UI=a.UI.descripcion,
                         localizacion=a.UI.UILocalizacion.descripcion,
                         vendedor=a.Proforma.Empleado.descripcion.ToUpper(),
                         etapa=a.UI.Etapa.descripcion   ,
                         formatoVenta=a.Proforma.FormatoVenta.descripcion, 

                    };
            return q;
        }

        [DataObjectMethod(DataObjectMethodType.Select, false)]
        public IEnumerable<ProformaExcel> Execute(int idProyecto,
                                                        int idEtapa,
                                                        string clienteStr,
                                                        string cuiStr,
                                                        string numDocumento)
        {


            if (!clienteStr.HasValue())
                clienteStr = "";
            if (!cuiStr.HasValue())
                cuiStr = "";
            if (!numDocumento.HasValue())
                numDocumento = "";
            var q = ApplySelect_ListInfo();


            q = q.Where(a => a.UI.Contains(cuiStr)
                              & a.numDocumento.Contains(numDocumento)
                              & (a.nombre.Contains(clienteStr) |a.apellido.Contains(clienteStr))
                              & a.idProyecto == idProyecto
                              & (idEtapa == 0 ? a.idEtapa != 0 : a.idEtapa == Convert.ToInt32(idEtapa))
                              );


            _count = q.Count();


            return q;
        }


    }
}
